package com.ruoyi.patrol.utils;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.aliyun.oss.model.OSSObject;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

/**
 * @author ：小杜
 * @date ：Created in 2022/12/10 21:51
 * @描述 ：
 */
public class OssUtils {
    public static String getOssUrl(String url) {
        // Endpoint以华东1（杭州）为例，其它Region请按实际情况填写。
//        String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        String endpoint = "oss-cn-hangzhou.aliyuncs.com";
        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        String accessKeyId = "LTAI5tAyGgP8PgZsEa3S3Gsf";
        String accessKeySecret = "S6xffdzcf2iHCcJUPpO3cVEucZ6kfm";
        // 填写Bucket名称，例如examplebucket。
        String bucketName = "jbq";
        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
//        String objectName = "image/202212/69e68c43a4c51a76063ecfa22b870dbe.jpg";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        try {

            GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, url);
//             设置签名URL的过期时间
            request.setExpiration(new Date(System.currentTimeMillis() + 30 * 60 * 1000L));
            return ossClient.generatePresignedUrl(request) + "";


//            // 调用ossClient.getObject返回一个OSSObject实例，该实例包含文件内容及文件元信息。
//            OSSObject ossObject = ossClient.getObject(bucketName, objectName);
//            // 调用ossObject.getObjectContent获取文件输入流，可读取此输入流获取其内容。
//            InputStream content = ossObject.getObjectContent();
//            File tmp = new File("D:\\123.jpg");
//            OutputStream os = new FileOutputStream(tmp);
//            int bytesRead = 0;
//            byte[] buffer = new byte[8192];
//            while ((bytesRead = content.read(buffer, 0, 8192)) != -1) {
//                os.write(buffer, 0, bytesRead);
//            }
//            content.close();
        } catch (Exception e) {
            System.out.println("Error Message:" + e.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
        return "";
    }

}
